package com.demo.java.OD301_350.OD323;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【矩阵稀疏扫描(B卷)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146118437
 */
public class OdMain {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 读取矩阵的行数和列数
        int r = sc.nextInt();
        int c = sc.nextInt();

        // 创建两个数组，分别存储行和列的数据
        int[][] rm = new int[r][c];  // 行矩阵
        int[][] cm = new int[c][r];  // 列矩阵

        // 初始化计数变量
        int rt = 0;  // 记录满足条件的行数
        int rz = c / 2;  // 每行需要有多少个0，才能符合条件
        int[] rzr = new int[r];  // 存储每行中0的数量

        // 遍历行数据，统计每行的0的个数
        for (int i = 0; i < r; i++) {
            for (int j = 0; j < c; j++) {
                int in = sc.nextInt();  // 读取矩阵元素
                rm[i][j] = in;  // 填充行矩阵
                cm[j][i] = in;  // 填充列矩阵
                if (in == 0) {  // 如果该元素为0，则增加零的计数
                    rzr[i]++;
                }
            }
            // 如果该行0的个数大于或等于列数的一半，则满足条件
            if (rzr[i] >= rz) {
                rt++;
            }
        }

        // 输出满足条件的行数
        System.out.println(rt);

        // 初始化列相关的变量
        int ct = 0;  // 记录满足条件的列数
        rz = r / 2;  // 每列需要有多少个0，才能符合条件
        int[] czr = new int[c];  // 存储每列中0的数量

        // 遍历列数据，统计每列的0的个数
        for (int i = 0; i < c; i++) {
            for (int j = 0; j < r; j++) {
                if (cm[i][j] == 0) {  // 如果该元素为0，则增加零的计数
                    czr[i]++;
                }
            }
            // 如果该列0的个数大于或等于行数的一半，则满足条件
            if (czr[i] >= rz) {
                ct++;
            }
        }

        // 输出满足条件的列数
        System.out.println(ct);
    }
}